import { ApiProperty } from "@nestjs/swagger";
import { $Enums } from "@prisma/client";
import { Transform } from "class-transformer";
import { IsEnum, IsInt, IsOptional, IsString, Min } from "class-validator";

export class CreateFileDto {
    @Transform(({ value }) => Number(value))
    @IsInt()
    @Min(0)
    @ApiProperty({ description: "文件的隶属目录ID，0表示根目录（未分类）", example: 1, required: true })
    dirId: number;

    @IsString()
    @IsEnum($Enums.UploadOrigin)
    @ApiProperty({ description: "文件上传来源", enum: $Enums.UploadOrigin, required: true })
    origin: $Enums.UploadOrigin;

    @IsString()
    @ApiProperty({ description: "文件hash值", example: "1234567890abcdefg", required: true })
    hash: string;

    @Transform(({ value }) => Number(value))
    @IsOptional()
    @IsInt()
    @Min(0)
    @ApiProperty({
        description: "业务ID，用于区分不同业务的资源，如作为文章的插图，就是文章ID",
        example: 1,
        required: false
    })
    bizId: number;

    @ApiProperty({
        description: "表单数据格式的文件上传字段，默认：file，可在表单中自定义，如：avatar、image 等",
        type: "string",
        format: "binary", // 这告诉 Swagger 这是一个文件
        required: true
    })
    file: any; // 这里使用 any 或 Express.Multer.File（如果你安装了 @types/multer）
}
